home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FishMarket 1.0
/
FishMarket v1.0.iso
/
fishies
/
501-525
/
disk_510
/
atcopy
/
newintroe.c
< prev
next >
Wrap
C/C++ Source or Header
|
1992-05-06
|
5KB
|
212 lines
/* INCLUDES ********************************************************** */
#include <exec/types.h>
#include <exec/io.h>
#include <exec/memory.h>
#include <libraries/dos.h>
#include <intuition/intuition.h>
/* get the PowerWindows 2.0 code */
#include "NewIntroE.h"
#define UNSELECT 0xff7f /* ~SELECTED */
#define Flag_B 'B'
#define Flag_NC 'N'
#define Flag_CR 'C'
#define Flag_none '\0'
char Intro(char **pc,char *Option)
{
USHORT quit_flag = FALSE;
UWORD code;
ULONG class;
char opt;
LONG gnr,flag = FALSE;
struct Gadget *gpt,*oldG;
struct StringInfo *SI;
struct Window *wG; /* we fetch the RastPort pointer from here */
struct RastPort *rpG;
struct IntuiMessage *message; /* the message the IDCMP sends us */
none.Flags &= UNSELECT;
CR.Flags &= UNSELECT;
NC.Flags &= UNSELECT;
B.Flags &= UNSELECT;
switch(*Option)
{
case 'N':
case 'n': NC.Flags |= SELECTED;
oldG = &NC;
break;
case 'C':
case 'c': CR.Flags |= SELECTED;
oldG = &CR;
break;
case 'B':
case 'b': B.Flags |= SELECTED;
oldG = &B;
break;
default: none.Flags |= SELECTED;
oldG = &none;
break;
}
OK.NextGadget = &ABORT;
PATH.NextGadget = &OK;
B.NextGadget = &PATH;
CR.NextGadget = &B;
NC.NextGadget = &CR;
none.NextGadget = &NC;
NewWindowStructure1.FirstGadget = &none;
SI = (struct StringInfo *) PATH.SpecialInfo;
strncpy((char *) SI->Buffer,*pc,19);
SI->Buffer[19] = '\0';
wG = (struct Window *) OpenWindow(&NewWindowStructure1); /* open the window */
if ( wG == NULL )
{
return((char) 255);
}
rpG = wG->RPort; /* get a rastport pointer for the window */
PrintIText(rpG,&IntuiTextList1,0L,0L); /* Print the text if there is */
do
{
WaitPort(wG->UserPort);
while( (message = (struct IntuiMessage *)
GetMsg(wG->UserPort) ) != NULL)
{
code = message->Code; /* MENUNUM */
gpt = (struct Gadget *) message->IAddress; /* Gadget */
class = message->Class;
RefreshGadgets(wG->FirstGadget,wG,NULL);
ReplyMsg((struct Message *) message);
if ( class == CLOSEWINDOW )
{
quit_flag = TRUE;
flag = FALSE;
}
if (( class == GADGETUP ) || /* Gagdets */
( class == GADGETDOWN ))
{
gnr = gpt->GadgetID;
switch(gnr)
{
case 1:
case 2:
case 3:
case 4: RemoveGadget(wG,(struct Gadget *) &none);
RemoveGadget(wG,(struct Gadget *) &CR);
RemoveGadget(wG,(struct Gadget *) &NC);
RemoveGadget(wG,(struct Gadget *) &B);
oldG->Flags &= UNSELECT;
AddGadget(wG,(struct Gadget *) &none,0);
AddGadget(wG,(struct Gadget *) &CR,0);
AddGadget(wG,(struct Gadget *) &NC,0);
AddGadget(wG,(struct Gadget *) &B,0);
RefreshGadgets(wG->FirstGadget,wG,NULL);
if (none.Flags < SELECTED && CR.Flags < SELECTED
&& NC.Flags < SELECTED && B.Flags < SELECTED)
{
oldG = &none;
RemoveGadget(wG,oldG);
RemoveGadget(wG,(struct Gadget *) &CR);
RemoveGadget(wG,(struct Gadget *) &NC);
RemoveGadget(wG,(struct Gadget *) &B);
oldG->Flags |= SELECTED;
AddGadget(wG,oldG,0);
AddGadget(wG,(struct Gadget *) &CR,0);
AddGadget(wG,(struct Gadget *) &NC,0);
AddGadget(wG,(struct Gadget *) &B,0);
RefreshGadgets(wG->FirstGadget,wG,NULL);
}
else
{
oldG = gpt;
}
break;
case 6: flag = TRUE;
quit_flag = TRUE;
break;
case 7: flag = FALSE;
quit_flag = TRUE;
break;
default: ActivateGadget((struct Gadget *) &PATH,wG,NULL);
RefreshGadgets(wG->FirstGadget,wG,NULL);
}
}
}
}
while (quit_flag == FALSE);
if (flag == FALSE)
{
CloseWindow(wG);
return((char) 255);
}
if (none.Flags >= SELECTED)
{
opt = Flag_none;
}
if (CR.Flags >= SELECTED)
{
opt = Flag_CR;
}
if (NC.Flags >= SELECTED)
{
opt = Flag_NC;
}
if (B.Flags >= SELECTED)
{
opt = Flag_B;
}
SI = (struct StringInfo *) PATH.SpecialInfo;
strcpy(*pc,(char *) SI->Buffer);
CloseWindow(wG);
return(opt);
}
struct AlertMessage
{
SHORT LeftEdge;
BYTE TopEdge;
char AlertText[50];
BYTE Flag;
};
struct AlertMessage TimeOut[] =
{
50, 24, "Warning, the PC/AT did not reply to the Amiga ! ", 255,
50, 44, " Program terminated. ", 255,
50, 64, " Continue with left or right mouseclick!", 0
};
struct AlertMessage NoLib[] =
{
50, 24, " Warning, can't find PC/AT board! " , 255,
50, 44, " Program terminated. ", 255,
50, 64, " Continue with left or right mouseclick!", 0
};
extern char *CLI_Help =
"File(s) TO PC-path OPT [NC] no convert of char's, but convert LF to CRLF\
\n [CR] no convert of LF to CRLF, but convert char's\
\n [B] means both [NC] and [CR];\
\n
default full conversion
\n";
extern char *CLI_Template = "Files/...,TO/K,OPT/K";